﻿//#include <iostream>
//using namespace std;
//    class CDate;
//    class CTime {
//        int hour = 10, minute = 0, second = 0;
//    public:
//        void display(const CDate& );
//    };
//class CDate {
//
//    int year = 2021, month = 5, day = 1;
//public:
//    friend void CTime:: display(const CDate&);
//};
//void CTime::display(const CDate& t)
//{
//    cout << t.year << t.month << t.day;
//
//}
//int main()
//{
//    CDate day;
//    CTime time1;
//    time1.display(day);
//}
//#include <iostream>
//using namespace std;
//class CDate;
//class CTime {
//    int hour = 10, minute = 0, second = 0;
//public:
//    void display(const CDate&);
//};
//class CDate {
//    friend class CTime;//友元函数，一整个类都可以访问
//    int year = 2021, month = 5, day = 1;
//public:
//};
//void CTime::display(const CDate& t)
//{
//    cout << t.year << t.month << t.day;
//}
//int main()
//{
//    CDate day;
//    CTime time1;
//    time1.display(day);
//}
//#include <iostream>
//#include <math.h>
//using namespace std;
//class Point
//{
//private:
//    double x, y;
//public:
//    Point(double xx, double yy)
//    {
//        x = xx; y = yy;
//    }
//    friend double Distance(Point& a, Point& b);
//};
//double Distance(Point& a, Point& b)
//{
//    double s = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
//    return s;
//}
//int main()
//{
//    int t;
//    double x1, y1, x2, y2;
//    cin >> t;
//    for (int i = 0; i < t; i++)
//    {
//        cin >> x1 >> y1 >> x2 >> y2;
//        Point point1(x1,y1);
//        Point point2(x2,y2);
//        double s=Distance(point1, point2);
//        cout << (int)s << endl;
//    }
//    return 0;
//}
//#include <iostream>
//using namespace std;
//class Complex
//{
//private:
//	double real; // 实部
//	double imag; // 虚部
//public:
//	Complex()
//	{
//		double real = 0;
//		double imag;
//	}
//	Complex(double r, double i)
//	{
//		real = r;
//		imag = i;
//	}
//	friend Complex addCom(const Complex& c1, const Complex& c2);
//
//	friend void outCom(const Complex& c);
//};
//Complex addCom(const Complex& c1, const Complex& c2)
//{
//	Complex c3;
//	c3.real= c1.real + c2.real;
//	c3.imag=c1.imag + c2.imag;
//	return c3;
//}
//void outCom(const Complex& c)
//{
//	cout << "(" << c.real << "," << c.imag << ")" << endl;
//}
//int main()
//{
//	int s, x,t;
//	char op;
//	int s1, x1;
//	cin >> s >> x;
//	cin >> t;
//	Complex complex1(s, x);
//	for (int i = 0; i < t; i++)
//	{
//		cin >> op>>s1 >> x1;
//		if (op == '-')
//		{
//			s1 = -s1;
//			x1 = -x1;
//		}
//		Complex complex2(s1, x1);
//		complex1 =addCom(complex1, complex2);
//		outCom(complex1);
//	}
//	return 0;
//}
//#include <iostream>
//#include <iomanip>
//using namespace std;
//class Time;
//class Date
//{
//private:
//	int y, m, d;
//public:
//	Date(int _y, int _m, int _d)
//	{
//		y = _y; m = _m; d = _d;
//	}
//	friend void display(const Date& d, const Time& t);
//};
//class Time
//{
//private:
//	int h, m, s;
//public:
//	Time(int _h, int _m1, int _s)
//	{
//		h = _h; m = _m1; s = _s;
//	}
//	friend void display(const Date& d, const Time& t);
//};
//void display(const Date& d, const Time& t)
//{
//	cout << d.y << "-" << setfill('0') << setw(2) << d.m << "-" << setfill('0') << setw(2)<< d.d << " " << setfill('0') << setw(2)<< t.h << ":" << setfill('0') << setw(2)<< t.m << ":"<< setfill('0') << setw(2) << t.s << endl;
//}
//int main()
//{
//	int t,_y,_m,_d,_h,_m1,_s;
//	cin >> t;
//	for (int i = 0; i < t; i++)
//	{
//		cin >> _y >> _m >> _d;
//		Date date1(_y, _m, _d);
//		cin>> _h>>_m1>> _s;
//		Time time1 (_h, _m1, _s);
//		display(date1, time1);
//	}
//	return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS//oj不用这句话
//#include <iostream>
//#include <iomanip>
//#include <cstring>
//using namespace std;
//class Hotel
//{
//private:
//    static int totalCustNum;
//    static float totalEarning;
//    static float rent;
//    char* customerName;
//    int customerId;
//public:
//    Hotel(float rent1)
//    {
//        rent = rent1;
//    }
//    void setrent(float rent_)
//    {
//        rent = rent_;
//    }
//    float getrent()
//    {
//        return rent;
//    }
//    Hotel(char* customer)
//    {
//        totalCustNum++;
//        customerName = new char[strlen(customer)+1];
//        strcpy(customerName, customer);
//        customerId = totalCustNum;
//        totalEarning = rent + totalEarning;
//    }
//    ~Hotel()//析构函数
//    {
//        delete[]customerName;
//    }
//    static int totalCustNum1()
//    {
//        return totalCustNum;
//    }
//    static float rent1()
//    {
//        return rent;
//    }
//    static float totalEarning1()
//    {
//        return totalEarning;
//    }
//    void Display()
//    {
//        cout << customerName << " " << "2015" << setfill('0') << setw(4) <<customerId << " " <<totalCustNum  << " " << totalEarning << endl;
//    }
//};
//int Hotel::totalCustNum = 0;
//float Hotel::totalEarning = 0;
//float Hotel::rent = 0;
//int main()
//{
//    float rent;
//    cin >> rent;
//    Hotel hotel(rent);//记得把rent传过去
//    hotel.setrent(rent);
//    char customer[100];
//    while(1)
//    {
//        cin >> customer;
//        if (strcmp(customer,"0") == 0)//strcmp比较两个字符串是不是一样strcpy是 把字符串复制过去
//            break;
//        else
//        {
//            Hotel hotel1(customer);
//            hotel1.Display();
//        }
//    }
//    return 0;
//}
//#include <iostream>
//#include <string>
//using namespace std;
//class Account
//{
//private:
//    static float count;
//    static float interestRate;
//    string accno, accname;
//    float balance;
//public:
//    Account()
//    {
//        accno ="0"; accname = "0"; balance = 0;
//    }
//    Account(string ac, string na, float ba)
//    {
//        count = count + ba;
//        accno = ac; accname = na; balance = ba;
//        cout << accno << " " << accname << " " ;
//    }
//    void setdeposit(float amount)
//    {
//        balance = balance + amount;
//        cout << balance << " ";
//        count = count +amount;
//    }
//    void withdraw(float amount)
//    {
//        balance = balance - amount;
//        count = count -amount;
//        cout << balance << endl;
//    }
//    static void setInterestRate(float rate)
//    {
//        interestRate = rate;
//    }
//    static float getCount()
//    {
//        cout << count << endl;
//        return count;
//    }
//    static float getInterestRate()
//    {
//        return interestRate;
//    }
//    friend void update(Account& a);
//    float  getbalance()
//    {
//        return balance;
//    }
//};
//void update(Account& a)
//{ 
//    float inter = a.balance * a.interestRate;
//    a.count = a.count + inter;
//    a.balance= a.balance+inter;
//    cout << a.balance << " ";
//}
//float Account::count = 0;
//float Account::interestRate = 0;
//int main()
//{
//    float interestRate;
//    int n;
//    float balance,deposit,withdraw;
//    string id,name;
//    cin >> interestRate;
//    cin >> n;
//    Account* p = new Account[n];
//    Account account;
//    account.setInterestRate(interestRate);
//    for (int i = 0; i < n; i++)
//    {
//        cin >>id>> name >>balance>>deposit >> withdraw;
//        Account account (id, name, balance);
//        p[i] = account;
//        p[i].setdeposit(deposit);
//        update(p[i]);
//       p[i].withdraw(withdraw);
//    }
//    account.getCount();
//    delete[]p;
//    return 0;
//}
//#include <iostream>
//using namespace std;
//class Robot
//{
//private:
//	string _name;
//	int blood;
//	char _type;
//	int _rank;
//	int sh;
//	int fy;
//	char _btype;
//public:
//	Robot()
//	{
//		_name = "name"; _type = 'N'; _rank = 0; _btype = 'A';
//	}
//	Robot(string name, char type, int rank, char btype)
//	{
//		_name = name; _type = type; _rank = rank; _btype = btype;
//	}
//	char& gettype()//使用引用否则下面 (p->gettype() != _btype)显示左边必须为可改变值
//	{
//		return _type;
//	}
//	int& getblood()
//	{
//		return blood;
//	}
//	int& getsh()
//	{
//		return sh;
//	}
//	int& getfy()
//	{
//		return fy;
//	}
//	int& getrank()
//	{
//		return _rank;
//	}
//	void print()
//	{
//		cout << _name << "--" << _btype << "--" << _rank << "--" << blood << "--" << sh << "--" << fy << endl;
//	}
//};
//bool judge(Robot *p, char _btype)
//{
//	if (p->gettype() != _btype)
//	{
//		if (_btype == 'N')
//		{
//			p->getblood()= 5 * p->getrank();
//			p->getsh() = 5 * p->getrank();
//			p->getfy() = 5 * p->getrank();
//		}
//		else if (_btype == 'A')
//		{
//			p->getblood() = 5 * p->getrank();
//			p->getsh() = 10 * p->getrank();
//			p->getfy() = 5 * p->getrank();
//		}
//		else if (_btype == 'D')
//		{
//			p->getblood() = 5 * p->getrank();
//			p->getsh() = 5 * p->getrank();
//			p->getfy() = 10 * p->getrank();
//		}
//		else{
//			p->getblood() = 50 * p->getrank();
//			p->getsh() = 5 * p->getrank();
//			p->getfy() = 5 * p->getrank();
//		}
//		return true;
//	}
//	else
//	{
//		return false;
//	}
//}
//int main()
//{
//	int t,rank,count=0;
//	char type, btype;
//	string name;
//	cin >> t;
//	for (int i = 0; i < t; i++)
//	{
//		cin >> name >> type >> rank >> btype;
//		Robot robot(name, type, rank, btype);
//		Robot* p =&robot;
//		if (judge(p, btype) == true)
//		{
//			count++;
//		}
//		robot.print();
//	}
//	cout << "The number of robot transform is " <<count<< endl;
//	return 0;
//}
//#include <iostream>
//using namespace std;
//class Number
//{
//private:
//	int _num;
//	char _type;
//	string _name, state;
//public:
//	Number()
//	{
//		_num = 0; _type = 'A'; state = "use", _name = "name";
//	}
//	void set(int num, char type, int use, string name)
//	{
//		_num = num; _type = type; _name = name;
//		if (use == 1)
//			state = "use";
//		else
//			state = "unuse";
//		cout << _num << " " << "constructed." << endl;
//	}
//	int judge(int num1,Number *p)
//	{
//		int flag = 0;
//		for (int i = 0; i < 3; i++)
//		{
//			if (num1 == p[i]._num)
//			{
//				flag = 1;
//			 cout << "Phone=" << p[i]._num << "--Type=" << p[i]._type << "--State="<< p[i].state << "--Owner=" << p[i]._name << endl;
//				
//				break;
//			}
//		}
//		if(flag==0)
//		{
//			return 0;
//		}
//		return 1;
//	}
//~Number()
//	{
//		cout << _num << " " << "destructed." << endl;
//	}
//};
//int main()
//{
//	int num,use,t,num1;
//	char type;
//	string name;
//	Number* p = new Number[3];
//	for (int i = 0; i < 3; i++)
//	{
//		cin >> num >> type >> use >> name;
//		p[i].set(num, type, use, name);
//	}
//	cin >> t;
//	for (int j = 0; j < t; j++)
//	{
//		cin >> num1;
//		int d = p->judge(num1,p);
//		if (d == 0)
//		{
//			cout << "wrong number." << endl;
//		}
//	}
//	delete[]p;//写在最后面析构函数就可以在最后统一除掉
//	//80000003 destructed.
//	//80000002 destructed.
//	//80000001 destructed.
//
//	return 0;
//}
//#include <iostream>
//using namespace std;
//class account
//{
//private:
//	int _num, _ye;
//	string _type;
//	char _jx,_check;
//	double rate;
//public:
//	account(int num, char type, int ye,char jx,char check)
//	{
//		_num = num; _ye = ye; _jx = jx; _check = check;
//		if (type == 'P')
//		{
//			_type = "Person";
//		}
//		else
//		{
//			_type = "Enterprise";
//		}
//	}
//	account(const account& r)
//	{
//		if (r._jx == 'C')
//		{
//			rate = 0.005;
//			_ye = r._ye +r._ye* rate;//这样子计算不会出错
//			cout << "Account=" << r._num << "--sum=" << _ye << endl;
//		}
//		else 
//		{
//			rate = 0.005;
//			cout << "Account=" << r._num << "--" << r._type << "--sum=" << r._ye << "--rate=" << rate << endl;
//		}
//		if (r._check == 'P')
//		{
//			rate = 0.015;
//			_num = r._num + 50000000;
//			cout << "Account=" << _num << "--" << r._type << "--sum=" << r._ye << "--rate=" << rate << endl;
//		}
//		else
//		{
//			rate = 0.015;
//			_num = r._num + 50000000;
//			_ye = r._ye + r._ye * rate;
//			cout << "Account=" << _num << "--sum=" << _ye << endl;
//		}
//	}
//	
//};
//int main()
//{
//	int t,num,ye;
//	char type,jx, check;
//	cin >> t;
//	for (int i = 0; i < t; i++)
//	{
//		cin >> num >> type >> ye>>jx>>check;
//		account count(num, type, ye,jx,check);
//		account count1(count);
//	}
//	return 0;
//#include <iostream>
//using namespace std;
//class tv
//{
//private:
//	int _bi,  _px, _bh; 
//	string _mk;
//	static int tvc;
//	static int dvdc;
//public:
//	tv()
//	{
//		_bi = 0; _px = 0; _bh = 50;
//	}
//	tv(int bi, int px, string mk,int bh)
//	{
//		_bi = bi; _px = px; _mk = mk; _bh = bh;
//	}
//	static int &gettvc()
//	{
//		return tvc;
//	}
//	static int &getdvdc()
//	{
//		return dvdc;
//	}
//	friend void judge(tv* p1,int mk, int px, int bh);
//	void print()
//	{
//		cout << "第" << _bi << "号电视机--" << _mk << "--频道" << _px << "--音量" << _bh << endl;
//	}
//};
//void judge(tv* p1, int mk, int px, int bh)
//{
//	p1->_px = px;
//	p1->_bh = bh+p1->_bh;
//	if (p1->_bh > 100)
//	{
//		p1->_bh = 100;
//	}
//	else if (p1->_bh < 0)
//	{
//		p1->_bh = 0;
//	}
//	if (mk == 1)
//	{
//		if (p1->_mk == "DVD模式")
//		{
//			p1->getdvdc()--;
//			p1->_mk = "TV模式";
//			p1->_px = px;
//		}
//	}
//	else
//	{ 
//		if (p1->_mk == "TV模式")
//		{
//		 p1->getdvdc()++;
//		 p1->_mk = "DVD模式";
//         p1->_px = 99;
//		}
//	}
//	p1->print();
//}
//int tv::tvc = 0;
//int tv::dvdc = 0;
//int main()
//{
//	int n, t, bi, px, bh,mk;
//	cin >> n >> t;
//	tv* p = new tv[n];
//	for (int i = 0; i <n; i++)
//	{
//		p[i] = tv(i+1, i+1, "TV模式",50);
//	}
//	for (int j = 0; j < t; j++)
//	{
//		cin >> bi >> mk >> px >> bh;
//		judge(&p[bi - 1], mk, px, bh);
//	}
//	int tvc = 10 - (p->gettvc());
//	cout << "播放电视的电视机数量为" << 10-tv::getdvdc() << endl;
//	cout << "播放DVD的电视机数量为" <<  tv::getdvdc() << endl;
//	delete[]p;
//	return 0;
//}
//#include <iostream>
//using namespace std;
//class CVector
//{
//private:
//	int *_date;
//	int _n=5;
//public:
//	CVector()
//	{
//		 _date = new int[_n];
//		for (int i = 0; i < _n; i++)
//		{
//			_date[i] = i;
//		}
//	}
//	~CVector()
//	{
//		delete[]_date;
//	}
//	CVector(int *date,int n)
//	{
//		_n = n;
//		_date = new int[_n];
//		for (int i = 0; i < _n; i++)
//		{
//			_date[i] = date[i];
//		}
//	}
//	void print()
//	{
//		for (int i = 0; i < _n; i++)
//		{
//			if (i == _n - 1)
//				cout << _date[i];
//			else
//			cout << _date[i]<<" ";
//		}
//		cout << "\n";
//	}
//};
//int main()
//{
//	int n;
//	cin >> n;
//	int* date=new int [n];
//	for (int i = 0; i< n; i++)
//	{
//		cin >> date[i];
//	}
//	CVector cvector;
//	cvector.print();
//	CVector cvector1(date, n);
//	cvector1.print();
//	delete[]date;
//	return 0;
//}
#include <iostream>
using namespace std;
class CVector
{
private:
	int _n;
	int *_date;
public:

	friend CVector add(const CVector v1, const CVector v2);
	CVector(int *date, int n)
	{
		_n = n;
		 _date = new int[_n];
		for (int i = 0; i< n; i++)
		{
			_date[i] = date[i];
		}
	}
	~CVector()
	{
		delete[]_date;
	}
	void print()
	{
		for (int i = 0; i < _n; i++)
		{
			cout << _date[i];
		}
		cout << "\n";
	}
};
CVector add(const CVector v1, const CVector v2)
{
	int* p1 = new int[v1._n];
	for (int i = 0; i < v1._n; i++)
	{
		p1[i] = v1._date[i] + v2._date[i];
	}
		CVector v3(p1,v1._n);
		v3.print();
		delete[]p1;
		return v3;
}
int main()
{
	int t,n,n1,n2;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		cin >> n;
		int* p = new int[n]; 
		for (int j = 0; j < n; j++)
		{
			cin >> p[j];
		}	
		CVector v1(p,n);
		v1.print();
		for (int j = 0; j < n; j++)
		{
			cin >> p[j];
		}
		CVector v2(p,n);
		v2.print();
		add(v1, v2);
		delete[]p;
	}
	return 0;
}